PHP 文件上传
2022-04-21
在当今时代技术发展旅程中,文件的上传与下载已经成为了一个非常常用的功能,如个人资料中的设置个人头像,也需要用到文件的上传操作。在比如QQ.COM的官网,需要用到文件下载的操作与应用。
PHP 文件上传
获取上传后的文件信息
$_FILES
$_FILES是一个二维数组,主要用途是当文件上传后,依然可以使用该函数获取文件的信息;
文件的上传类型
$FILES['文件’][‘类型’]
文件的常用上传类型主要可以分为以下几种:
| ID | DA | FA |
|---|---|---|
| text/plain | 表示普通文本文件 | 文件 |
| text/html | 表示HTML文件 | |
| image/gif | 表示GIF图片 | 图片 |
| image/pjpeg | 表示JPEG图片 | |
| iamge/jpeg | 用于表示JPEG图片[^Fivefox浏览器] | |
| application/msword | 表示Word文件 | 格式文件 |
| application/pdf | 表示PDF文件 | |
| application/x-zip-compressed | 表示ZIP格式的压缩文件 | |
| application/octet-stream | 表示二进制流文件[^如EXE、RAR、视频等文件] | |
| audio/mpeg | 表示mp3格式音频文件 | 音频文件 |
文件上传在服务器时的临时存储名
$FILES[‘文件’][‘临时名称’]
当文件被上传后,文件存储与服务器端,此时我们可以为其增加临时名称,可以用$FILES[‘文件’][‘临时名称’]来解决
以上传的文件大小
$FILES[‘文件’][‘大小’]
已上传的文件大小,单位即为字节。
错误消息代码
$FILES[‘文件’][‘erre’]
在错误信息代码中,值为0 将表示没有错误发生,即文件上传成功。值为1即代表上传的文件超过了php.ini文件中upload_max_filesize选项限制的值。值为2则表示上传文件的大小超过了HTML表单中规定的最大值。值为3则表示文件中只有部分被上传。值为4则表示没有文件被上传,而最后值为5则表示上传文件大小为0如下表:
| ID | DA | FA |
|---|---|---|
| 0 | 表示没有错误发生,即文件上传成功 | |
| 1 | 传的文件超过了php.ini文件中upload_max_filesize选项限制的值 | |
| 2 | 上传文件的大小超过了HTML表单中规定的最大值 | |
| 3 | 文件中只有部分被上传 | |
| 4 | 没有文件被上传 | |
| 5 | 文件大小为0 |
临时存储
move_uploaded_file()
当文件上传结束后,将会默认的存储在临时目录中,这时候必须将其从临时目录中删除或移动到其他地方,无论是否上传成功,都将当脚本执行完后删除;
判断文件是否通过HTTP POST上传
is_uploaded_file()
为避免不发分子或恶意用户是否通过HTTP POST上传,所以PHP的is_uploaded_file()函数进行判断,诺通过HTTP POST上传的则返回TRUE,否则返回FALSE;
文件上传例子
1 | <!DOCTYPE html> |
文件的下载
header()
header()函数主要作用就是向浏览器发送正确的HTTP报头,报头指定了网页的内容和类型,页面属性等信息。header()函数的功能主要用页面跳转和指定下载的文件类型 以及文件下载如下:
header()支持表
| ID | DA | FA |
|---|---|---|
| Location() | 跳转到指定页面 | 页面跳转 |
| Content-type: | 指定下载的文件类型 | 下载文件类型 |
| readfile() | 文件下载 | 文件下载 |
文件处理函数
计算文件大小
filesize()
1 | <!DOCTYPE html> |
判断文件是否存在
file_exists()
1 | <!DOCTYPE html> |
文件删除
unlink()
在php之中,可使用unlink()函数进行删除不需要的文件,如果删除成功则返回TRUE、否则删除失败则返回FALSE;
1 | <!DOCTYPE html> |
| ID | DA | FA |
|---|---|---|
| $_FILES | 主要用途是当文件上传后,依然可以使用该函数获取文件的信息; | 获取上传后文件信息 |
| $FILES['文件’][‘类型’] | 设置当前文件上传的类型 | 上传类型 |
| 文件类型可包括以下几种: | ||
| text/plain | 表示普通文本文件 | 文件 |
| text/html | 表示HTML文件 | |
| image/gif | 表示GIF图片 | 图片 |
| image/pjpeg | 表示JPEG图片 | |
| iamge/jpeg | 用于表示JPEG图片[^Fivefox浏览器] | |
| application/msword | 表示Word文件 | 格式文件 |
| application/pdf | 表示PDF文件 | |
| application/x-zip-compressed | 表示ZIP格式的压缩文件 | |
| application/octet-stream | 表示二进制流文件[^如EXE、RAR、视频等文件] | |
| audio/mpeg | 表示mp3格式音频文件 | 音频文件 |
| $FILES[‘文件’][‘临时名称’] | 临时存放名称 | 文件上传在服务器时的临时存储名 |
| $FILES[‘文件’][‘大小’] | 已上传的文件大小,单位即为字节。 | 文件的上传大小 |
| $FILES[‘文件’][‘erre’] | 在错误信息代码中有如下代码: | 错误代码 |
| 错误代码: | ||
| 0 | 表示没有错误发生,即文件上传成功 | |
| 1 | 传的文件超过了php.ini文件中upload_max_filesize选项限制的值 | |
| 2 | 上传文件的大小超过了HTML表单中规定的最大值 | |
| 3 | 文件中只有部分被上传 | |
| 4 | 没有文件被上传 | |
| 5 | 文件大小为0 | |
| move_uploaded_file() | 当文件上传结束后,将会默认的存储在临时目录中,这时候必须将其从临时目录中删除或移动到其他地方,无论是否上传成功,都将当脚本执行完后删除; | 临时存储 |
| is_uploaded_file() | 判断文件是否通过HTTP POST上传 | HTTP POST |
| filesize() | 计算文件大小 | 文件处理函数 |
| file_exists() | 判断文件是否存在 | |
| unlink() | 删除文件 |
